package desmontec.testes

import java.util.Date;

import grails.test.*;
import desmontec.maquinas.*;
import desmontec.aluguel.*;
import desmontec.util.*;
import desmontec.funcionarios.*;
import desmontec.sistema.*;
import desmontec.clientes.Cliente;
import desmontec.documentos.*;
import desmontec.query.dpg.DPGQuery;

class TesteIntegracao extends grails.test.ControllerUnitTestCase {
	
	void inserirUsuario(){
		def user = new SecUser(	username: "Arthur",	password : "art12345",
								nome : "artmarques",email: "teste@integracao.com")	
		Date data = GregorianCalendar.getInstance().getTime().plus(60);
		user.dataValidade = data;
		
		user.save(flush: true)
		
	}
	
	void inserirUsuario2(){
		def user = new SecUser(	username: "nandopaf",	password : "nandopaf",
								nome : "Fernando",email: "paf@integracao.com")
		Date data = GregorianCalendar.getInstance().getTime().plus(60);
		user.dataValidade = data;
		
		user.save(flush: true)
		
	}
	
	void inserirEng() {
		def eng = new Engenheiro(nome: "Wilson",
			 numeroCREA: "1234",
			 flagEngenheiroPadrao: "S")
		eng.usuario = SecUser.get(1);
		eng.save(flush: true);
		
	}
	
	void inserirDPG1(){
		Date inicioPrazo = GregorianCalendar.getInstance().getTime().minus(30);
		Date fimPrazo = GregorianCalendar.getInstance().getTime().plus(60);
		
		def materiais = new QuantidadeMaximaDeMateriais(dinamite: 10, espoleta: 10,estopim: 10,
				cordelDet: 10, espoletim: 10, retardo: 10);
			
		materiais.save(flush: true);
		
		def dpg = new DPG(numero:1, beneficiario:"DPG 1", 
			inicioDoPrazoValidade:inicioPrazo, fimDoPrazoValidade:fimPrazo )
		dpg.materiais = materiais;
		dpg.usuario = SecUser.get(1);
		dpg.responsavel = Engenheiro.get(1);
		
				
		dpg.save(flush: true)
		
	}
	
	
	void inserirDPG2(){
		Date inicioPrazo = GregorianCalendar.getInstance().getTime().minus(30);
		Date fimPrazo = GregorianCalendar.getInstance().getTime().plus(60);
		
		def materiais = new QuantidadeMaximaDeMateriais(dinamite: 10, espoleta: 10,estopim: 10,
				cordelDet: 10, espoletim: 10, retardo: 10);
			
		materiais.save(flush: true);
		
		def dpg = new DPG(numero:2, beneficiario:"DPG 2",
			inicioDoPrazoValidade:inicioPrazo, fimDoPrazoValidade:fimPrazo )
		dpg.materiais = materiais;
		dpg.usuario = SecUser.get(1);
		dpg.responsavel = Engenheiro.get(1);
				
		dpg.save(flush: true)
	}
	
	void inserirDPG3(){
		Date inicioPrazo = GregorianCalendar.getInstance().getTime().minus(30);
		Date fimPrazo = GregorianCalendar.getInstance().getTime().minus(10);
		
		def materiais = new QuantidadeMaximaDeMateriais(dinamite: 10, espoleta: 10,estopim: 10,
				cordelDet: 10, espoletim: 10, retardo: 10);
			
		materiais.save(flush: true);
		
		
		def dpg = new DPG(numero:2, beneficiario:"DPG 3 - Invalidada",
			inicioDoPrazoValidade:inicioPrazo, fimDoPrazoValidade:fimPrazo )
		dpg.materiais = materiais;
		dpg.usuario = SecUser.get(1);
		dpg.responsavel = Engenheiro.get(1);
				
		dpg.save(flush: true)
	}
	
	void inserirMaquina1(){
		Date manutencao = GregorianCalendar.getInstance().getTime();
		def maq = new Maquina(nome: "BRITADOR", 
			referencia:"KXYZPQ", 
			horasParaTroca: 100f,
			dataUltimaManutencao: manutencao);
		maq.usuario = SecUser.get(1);
		
		maq.save(flush: true);
		
		
	}
	
	
	void inserirMaquina2(){
		Date manutencao = GregorianCalendar.getInstance().getTime();
		def maq = new Maquina(nome: "BRITADOR2 ",
			referencia:"KXYZPQ2",
			horasParaTroca: 50f,
			dataUltimaManutencao: manutencao);
		maq.usuario = SecUser.get(1);
		
		maq.save(flush: true);
		
		
	}
	
	void inserirMaquina3(){
		Date manutencao = GregorianCalendar.getInstance().getTime();
		def maq = new Maquina(nome: "BRITADOR3 ",
			referencia:"KYZPQMANSFFA2",
			horasParaTroca: 10f,
			dataUltimaManutencao: manutencao);
		maq.usuario = SecUser.get(1);
		
		maq.save(flush: true);
		
		
	}
	
	void inserirCliente1(){
		def cli = new Cliente(nome:"WILSON MARQUES LTDA", endereco: "RUA QUALQUER - 784",
			email:"teste@integracao.com", CNPJ:"124345689", InscEstadual:"11335899PB");
		cli.usuario = SecUser.get(1);
		
		cli.save(flush: true)
		
	}
	
	void inserirCliente2(){
		def cli = new Cliente(nome:"Cliente 2", endereco: "RUA DAS CASAS - 784",
			email:"cliente@integracao.com", CNPJ:"42624626", InscEstadual:"16536361335899PB");
		cli.usuario = SecUser.get(1);
		
		cli.save(flush: true)
		
	}
	
	void inserirAluguel1(){
		Date inicioPrazo = GregorianCalendar.getInstance().getTime().minus(30);
		Date fimPrazo = GregorianCalendar.getInstance().getTime().plus(60);
		
		def aluguel = new AluguelMaquina(flagAtivo:"S", 
			inicioValidade: inicioPrazo ,
			fimValidade: fimPrazo );
		aluguel.maquina = Maquina.get(1);
		aluguel.cliente = Cliente.get(1);
		aluguel.usuario = SecUser.get(1);		
		aluguel.save(flush: true)
	}
	
	
	void inserirAluguel2(){
		Date inicioPrazo = GregorianCalendar.getInstance().getTime().minus(30);
		Date fimPrazo = GregorianCalendar.getInstance().getTime().minus(10);
		
		def aluguel = new AluguelMaquina(flagAtivo:"S",
			inicioValidade: inicioPrazo ,
			fimValidade: fimPrazo );
		aluguel.maquina = Maquina.get(2);
		aluguel.cliente = Cliente.get(1);
		aluguel.usuario = SecUser.get(1);
		aluguel.save(flush: true)
		
				
	}
	
	void inserirAluguel3(){
		Date inicioPrazo = GregorianCalendar.getInstance().getTime().minus(30);
		Date fimPrazo = GregorianCalendar.getInstance().getTime().plus(60);
		
		def aluguel = new AluguelMaquina(flagAtivo:"S",
			inicioValidade: inicioPrazo ,
			fimValidade: fimPrazo );
		aluguel.maquina = Maquina.get(3);
		aluguel.cliente = Cliente.get(2);
		aluguel.usuario = SecUser.get(1);
		aluguel.save(flush: true)
		
	
		
	}
	
	
	void inserirConsumosAluguel1(){
		
		Date diaAtual = GregorianCalendar.getInstance().getTime().minus(20);
		def aluguel = AluguelMaquina.get(1)
		Calendar calendarAux = GregorianCalendar.getInstance()
		for (int i = 1; i < 80; i++){
			calendarAux.add(Calendar.DAY_OF_MONTH, 4)
			def consumo = new ConsumoAluguel(dia: calendarAux.getTime(), horasTrabalhadas: 8d,
				consumoDeDiesel:3d , consumoDeOleo40: 3d, consumoDeOleo68: 3d, 
				consumoDeOleo90: 3d, consumoGraxas: 3d, valorGasto: 50d );
			consumo.aluguel = aluguel;
			consumo.save(flush: true);
			
		}
		
	}
	
	
	void inserirConsumosAluguel2(){
		
		def aluguel = AluguelMaquina.get(2)
		Calendar calendarAux = GregorianCalendar.getInstance()
		
		for (int i = 1; i < 10; i++){
			calendarAux.add(Calendar.DAY_OF_MONTH, 4)
			def consumo = new ConsumoAluguel(dia: calendarAux.getTime(), horasTrabalhadas: 200d,
				consumoDeDiesel:3d , consumoDeOleo40: 3d, consumoDeOleo68: 3d,
				consumoDeOleo90: 3d, consumoGraxas: 3d, valorGasto: 50d );
			consumo.aluguel = aluguel;
			consumo.save(flush: true);
			
		}
		
	}
	
	void inserirConsumosAluguel3(){
		
		Date diaAtual = GregorianCalendar.getInstance().getTime().minus(20);
		def aluguel = AluguelMaquina.get(3)
		Calendar calendarAux = GregorianCalendar.getInstance()
		for (int i = 1; i < 80; i++){
			calendarAux.add(Calendar.DAY_OF_MONTH, 4)
			def consumo = new ConsumoAluguel(dia: calendarAux.getTime(), horasTrabalhadas: 15d,
				consumoDeDiesel:3d , consumoDeOleo40: 3d, consumoDeOleo68: 3d,
				consumoDeOleo90: 3d, consumoGraxas: 3d, valorGasto: 50d );
			consumo.aluguel = aluguel;
			consumo.save(flush: true);
			
		}
		
	}
	
	
}